home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / c / cd_mci.exe / MCI.CPP < prev    next >
C/C++ Source or Header  |  1993-01-07  |  3KB  |  189 lines

  1. /*
  2.     MCI.CPP
  3.  
  4.     Klasse fⁿr die Ansteuerung des MCI Interfaces.
  5.  
  6.     22.08.92 Norbert Unterberg
  7.  
  8. */
  9.  
  10.  
  11. #include <windows.h>
  12. #include <mmsystem.h>
  13.  
  14. #include "mci.h"
  15.  
  16.  
  17. MCI_OPEN_PARMS *CDAudio::GetOpenParams()
  18. {
  19.    MCI_OPEN_PARMS *mci = MCI::GetOpenParams();
  20.  
  21.    mci->lpstrDeviceType = "cdaudio";
  22.    return mci;
  23. }
  24.  
  25.  
  26. DWORD CDAudio::GetOpenFlags(MCI_OPEN_PARMS *mci)
  27. {
  28.    DWORD dwFlags = MCI::GetOpenFlags(mci);
  29.  
  30.    dwFlags |= MCI_OPEN_TYPE;
  31.  
  32.    return dwFlags;
  33. }
  34.  
  35.  
  36. MCI::MCI(HWND hwnd)
  37. {
  38.    dwCallback = (DWORD)hwnd;
  39.    szAlias = NULL;
  40.    dwCallback = NULL;
  41.    wDeviceID = 0;
  42. }
  43.  
  44.  
  45.  
  46. MCI_OPEN_PARMS *MCI::GetOpenParams()
  47. {
  48.    MCI_OPEN_PARMS *mci = new MCI_OPEN_PARMS;
  49.  
  50.    mci->dwCallback = dwCallback;
  51.    mci->wReserved0 = 0;
  52.    mci->lpstrDeviceType = NULL;
  53.    mci->lpstrElementName = NULL;
  54.    mci->lpstrAlias = szAlias;
  55.    return mci;
  56. }
  57.  
  58.  
  59. DWORD MCI::GetOpenFlags(MCI_OPEN_PARMS *mci)
  60. {
  61.    DWORD dwFlags = 0;
  62.  
  63.    if (mci->lpstrAlias)
  64.       dwFlags |= MCI_OPEN_ALIAS;
  65.  
  66.    return dwFlags;
  67. }
  68.  
  69.  
  70. MCI_GENERIC_PARMS *MCI::GetGenericParams()
  71. {
  72.    MCI_GENERIC_PARMS *mci = new MCI_GENERIC_PARMS;
  73.  
  74.    mci->dwCallback = dwCallback;
  75.    return mci;
  76. }
  77.  
  78.  
  79. DWORD MCI::GetStatus(DWORD dwItem, DWORD dwTrack)
  80. {
  81.    MCI_STATUS_PARMS mci;
  82.    DWORD dwReturn;
  83.    DWORD dwFlags;
  84.  
  85.    dwFlags = MCI_STATUS_ITEM | MCI_WAIT;
  86.    if (dwTrack)
  87.       dwFlags |= MCI_TRACK;
  88.       
  89.    mci.dwCallback = dwCallback;
  90.    mci.dwItem = dwItem;
  91.    mci.dwTrack = dwTrack;
  92.    dwReturn = mciCommand(MCI_STATUS, dwFlags, &mci);
  93.    if (dwReturn)
  94.       return 0;
  95.    else
  96.       return mci.dwReturn;  
  97. }
  98.  
  99.  
  100. DWORD MCI::Set(DWORD dwItem, DWORD dwValue)
  101. {
  102.    MCI_SET_PARMS mci;
  103.  
  104.    mci.dwCallback = dwCallback;
  105.    mci.dwTimeFormat = 0;
  106.    mci.dwAudio = 0;
  107.  
  108.    if (dwItem == MCI_SET_AUDIO)
  109.       mci.dwAudio = dwValue;
  110.  
  111.    if (dwItem == MCI_SET_TIME_FORMAT)
  112.       mci.dwTimeFormat = dwValue;
  113.  
  114.    return mciCommand(MCI_SET, dwItem | MCI_WAIT, &mci);
  115. }
  116.  
  117.  
  118.  
  119. DWORD MCI::Open(char *alias, DWORD dwFlags)
  120. {
  121.    MCI_OPEN_PARMS *mci;
  122.    DWORD dwResult;
  123.  
  124.    if (alias)
  125.       szAlias = alias;
  126.  
  127.    mci = GetOpenParams();
  128.  
  129.    dwResult = mciCommand(MCI_OPEN, GetOpenFlags(mci) | dwFlags, mci);
  130.    if (!dwResult)
  131.       wDeviceID = mci->wDeviceID;
  132.  
  133.    DeleteOpenParams(mci);
  134.    return dwResult;
  135. }
  136.  
  137.  
  138. DWORD MCI::Close(DWORD dwFlags)
  139. {
  140.    if (!wDeviceID)
  141.       return 0;
  142.  
  143.    return mciSendCommand(wDeviceID, MCI_CLOSE, dwFlags,
  144.                          (DWORD)(LPVOID)GetGenericParams());      
  145. }
  146.  
  147.  
  148. DWORD MCI::Play(DWORD dwFlags, DWORD from, DWORD to)
  149. {
  150.    MCI_PLAY_PARMS mci;
  151.  
  152.    if (!wDeviceID)
  153.       return 0;
  154.  
  155.    mci.dwCallback = dwCallback;
  156.    mci.dwFrom = from;
  157.    mci.dwTo = to;
  158.  
  159.    return mciSendCommand(wDeviceID, MCI_PLAY, dwFlags,
  160.                          (DWORD)(LPVOID)&mci);      
  161. }
  162.  
  163.  
  164. DWORD MCI::Stop(DWORD dwFlags)
  165. {
  166.    if (!wDeviceID)
  167.       return 0;
  168.  
  169.    return mciSendCommand(wDeviceID, MCI_STOP, dwFlags,
  170.                          (DWORD)(LPVOID)GetGenericParams());      
  171. }
  172.  
  173.  
  174. DWORD MCI::Seek(DWORD dwFlags, DWORD to)
  175. {
  176.    MCI_SEEK_PARMS mci;
  177.  
  178.    if (!wDeviceID)
  179.       return 0;
  180.  
  181.    mci.dwCallback = dwCallback;
  182.    mci.dwTo = to;
  183.  
  184.    return mciSendCommand(wDeviceID, MCI_SEEK, dwFlags,
  185.                          (DWORD)(LPVOID)&mci);      
  186. }
  187.  
  188.  
  189.